import axios from 'axios';
import Nprogress from 'nprogress';
import 'nprogress/nprogress.css';

const request = axios.create({
  baseURL: 'http://1026team6.vercel.app',
  // 为了跨域请求携带cookie-谢称石
  withCredentials: true,
  timeout: 100000,
});
const errMessages = {
  401: '未授权',
  403: '禁止访问',
  404: '资源找不到',
  500: '服务器错误',
};
// 请求拦截器
request.interceptors.request.use((config) => {
  // 进度条开始
  Nprogress.start();
  return config;
});

request.interceptors.response.use(
  (response) => {
    //进度条结束
    Nprogress.done();
    if (response.data.code === 200) {
      // 注意返值的数据结构, 这里拿的是response.data数据
      return response.data;
    }

    return Promise.reject(response.data.message || "未知错误");

  },
  (error) => {
    Nprogress.done();
    if (error.response) {
      return Promise.reject(errMessages[error.response.status]);
    }
    if (error.message.indexOf('Network Error') !== -1) {
      return Promise.reject(new Error('网络连接失败, 请连接网络或打开wifi重试'));
    }
    if (error.message.indexOf('timeout') !== -1) {
      return Promise.reject(new Error('网络连接超时'));
    }

    return Promise.reject(new Error('未知错误！请联系管理员'));
  },
);

export default request;
